package com.cskaoyan.service;

import com.cskaoyan.bean.MarketLogisticsChannel;
import com.cskaoyan.bean.MarketOrder;
import com.cskaoyan.bean.MarketOrderGoods;
import com.cskaoyan.bean.bo.WxOrderCommentBo;
import com.cskaoyan.bean.bo.WxOrderSubmitBo;
import com.cskaoyan.bean.common.BasePageInfo;
import com.cskaoyan.bean.common.CommonData;
import com.cskaoyan.bean.vo.*;

import javax.servlet.http.HttpSession;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Since 2022/12/29 13:59
 * @Author LA
 * @Description:
 */

public interface OrderService {
    /****
     * 多条件查询 检索订单列表
     * 不输入条件 默认全查询
     * 支持分页，支持排序
     * @param info
     * @param orderStatusArray
     * @param orderId
     * @param start
     * @param end
     * @param userId
     * @param orderSn
     * @return com.cskaoyan.bean.common.CommonData<com.cskaoyan.bean.vo.AdminOrderListVo>
     * @author LA
     * @since 2022/12/29 14:40
     */
    CommonData<AdminOrderListVo> list(BasePageInfo info, Short[] orderStatusArray, String orderId, Date start, Date end, Date[] timeArray, String userId, String orderSn);

    /****
     * 删除一条订单记录, deleted 状态更新为1.updateTime更新为当前时间
     * @param orderId
     * @return void
     * @author LA
     * @since 2022/12/29 23:00
     */
    void delete(Integer orderId);

    /**
     * MMT
     * 通过 comment 的id,查阅 admin_comment内容
     *
     * @param id
     * @return
     */
    String selectCommentById(Integer id);

    /****
     *  通过 comment id 更新admin_comment内容
     * @param id
     * @return void
     * @author LA
     * @since 2022/12/30 0:03
     */
    void updateCommentById(Integer id, String adminContent);

    /**
     * 通过 orderId查找订单详细信息
     *
     * @param id
     * @return com.cskaoyan.bean.vo.OrderDetailVo
     * @author LA
     * @since 2022/12/30 10:19
     */
    OrderDetailVo detail(String id);

    /**
     * 发货
     * 通过order的id更新order表中的发货信息
     *
     * @param orderId
     * @param shipChannel
     * @param shipSn
     * @return void
     * @author LA
     * @since 2022/12/30 11:47
     */
    void ship(Integer orderId, String shipChannel, String shipSn);

    /**
     * 退款 ，退款金额为用户实付金额
     *
     * @param orderId
     * @param refundMoney
     * @return void
     * @author LA
     * @since 2022/12/30 12:16
     */
    void refund(Integer orderId, BigDecimal refundMoney);

    /**
     * 查找表中所有的 物流公司字典信息
     *
     * @return
     */
    List<MarketLogisticsChannel> channel();

    MarketOrder queryOrderById(Integer id);


    // /****
    //  * 更新评论表用户评论信息
    //  * @param wxOrderCommentBo
    //  * @return void
    //  * @author LA
    //  * @since 2023/01/02 1:45
    //  */
    // void updateUserCommentByObj(WxOrderCommentBo wxOrderCommentBo);

    /**
     * 微信小程序，订单 列表展示页面
     *
     * @param showType
     * @param pageInfo
     * @return com.cskaoyan.bean.common.CommonData<com.cskaoyan.bean.vo.WxOrderListVo>
     * @author LA
     * @since 2023/01/02 2:30
     */
    CommonData<WxOrderListVo> wxList(Short showType, BasePageInfo pageInfo);

    /****
     * 微信小程序 订单list 中的详情信息 
     * @param orderId
     * @return com.cskaoyan.bean.vo.WxOrderDetailVo
     * @author LA
     * @since 2023/01/02 10:49 
     */
    WxOrderDetailVo wxDetail(String orderId);

    /**
     * 通过 goodsId查orderGoods表中，comment 数据
     *
     * @param goodsId
     * @return java.lang.Integer
     * @author LA
     * @since 2023/01/02 19:22
     */
    Integer selectOrderGoodsCommentById(Integer goodsId);

    /**
     * ordergoods的评价内容插入
     *
     * @param wxOrderCommentBo
     * @return void
     * @author LA
     * @since 2023/01/02 19:29
     */
    void insertComment(WxOrderCommentBo wxOrderCommentBo);

    /****
     *
     * @param orderId
     * @param goodsId
     * @return com.cskaoyan.bean.MarketOrderGoods
     * @author LA
     * @since 2023/01/02 21:47
     */
    MarketOrderGoods wxGoods(Integer orderId, Integer goodsId);

    /**
     * wx小程序,订单删除
     *
     * @param orderId
     * @return void
     * @author LA
     * @since 2023/01/02 23:07
     */
    void wxDelete(Integer orderId);

    /**
     * wx小程序 申请退款
     *
     * @param orderId
     * @return void
     * @author LA
     * @since 2023/01/02 23:40
     */
    void wxRefund(Integer orderId);

    /**
     * 微信小程序，用户申请取消订单
     *
     * @param orderId
     * @return void
     * @author LA
     * @since 2023/01/02 23:53
     */
    void wxCancel(Integer orderId);

    /**
     * 微信小程序，用户确认收货
     *
     * @param orderId
     * @return void
     * @author LA
     * @since 2023/01/03 0:01
     */
    void wxConfirm(Integer orderId);

    /**
     * 微信小程序，付款
     *
     * @param orderId
     * @return void
     * @author LA
     * @since 2023/01/03 0:40
     */
    void wxPrepay(Integer orderId);

    /**
     * 微信小程序 提交订单
     *
     * @param orderSubmitBo
     * @return com.cskaoyan.bean.vo.WxOrderSubmitVo
     * @author LA
     * @since 2023/01/03 1:02
     */
    WxOrderSubmitVo wxSubmit(WxOrderSubmitBo orderSubmitBo/*, HttpSession session*/);
}
